{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### K维向量的归一化指数函数（Softmax）计算 ###\n",
    "\n",
    "$$f(x) = \\frac{\\exp(x_i)}{\\sum_j \\exp(x_j)}$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Python implementation\n",
    "import math\n",
    "z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]\n",
    "z_exp = [math.exp(i) for i in z]  \n",
    "sum_z_exp = sum(z_exp)  \n",
    "softmax = [round(i / sum_z_exp, 3) for i in z_exp]\n",
    "softmax\n",
    "# Result: [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Your assignment:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# NumPy implementation\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 网格内任意两点间距离的计算\n",
    "\n",
    "计算(-5, -5), (-5, 5), (5, 5), (5, -5)围成的方格内，每0.01单位分别作1000条水平($y=-5, y=-4.99, y=-4.98...,y=4.99$)、垂直直线($x=-5, x=-4.99, x=-4.98...x=4.99$)，计算任意两直线交点到原点的距离"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x209a2e5ec50>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Python implementation\n",
    "import math\n",
    "xs = [p / 100 for p in range(-500, 500, 1)]\n",
    "ys = [p / 100 for p in range(-500, 500, 1)]\n",
    "ans = []\n",
    "for x in xs:\n",
    "    l = []\n",
    "    for y in ys:\n",
    "        l.append(math.sqrt(x ** 2 + y ** 2))\n",
    "    ans.append(l)\n",
    "plt.imshow(ans, cmap=plt.cm.gray)\n",
    "plt.colorbar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x209a4e8a4e0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# better Python implementation\n",
    "import math\n",
    "import itertools\n",
    "lines = [p / 100 for p in range(-500, 500, 1)]\n",
    "ans = []\n",
    "l = []\n",
    "for idx, (x, y) in enumerate(itertools.product(lines, lines)):\n",
    "    l.append(math.sqrt(x ** 2 + y ** 2))\n",
    "    if idx % 1000 == 999:\n",
    "        ans.append(l)\n",
    "        l = []\n",
    "plt.imshow(ans, cmap=plt.cm.gray)\n",
    "plt.colorbar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Your assignment: finish the NumPy implementation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "points = np.arange(-5, 5, 0.01)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 判断数组是否为递增序\n",
    "\n",
    "如$[1, 2, 3]$为递增数组，$[1, 1, 2]$、$[3, 2, 1]$等均不是递增数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "False\n",
      "False\n"
     ]
    }
   ],
   "source": [
    "# Python implementation\n",
    "def test(a):\n",
    "    for idx in range(len(a) - 1):\n",
    "        if a[idx] >= a[idx + 1]:\n",
    "            return False\n",
    "    return True\n",
    "print(test([1, 2, 3]))\n",
    "print(test([1, 1, 2]))\n",
    "print(test([3, 2, 1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "False\n",
      "False\n"
     ]
    }
   ],
   "source": [
    "# Better Python implementation\n",
    "def test(a):\n",
    "    judgement = [x < y for x, y in zip(a[:-1], a[1:])]\n",
    "    return all(judgement)\n",
    "print(test([1, 2, 3]))\n",
    "print(test([1, 1, 2]))\n",
    "print(test([3, 2, 1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Your assignment:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# NumPy implementation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
